package org.hy.persistence.group;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.hy.domain.User;
import org.hy.domain.group.GMember;
import org.hy.domain.group.Group;


/**
 * 小组成员映射器
 * @author Administrator
 *
 */
public interface GMemberMapper {

	/**
	 * 添加组员
	 * @param gMember
	 * @return
	 */
	int insertGMember(GMember gMember);
	
	/**
	 * 删除组员
	 * @return
	 */
	int deleteGMember(int idGmember);
	
	/**
	 * 查找小组成员
	 * @param id成员id
	 * @return
	 */
	GMember findGMemberById(int id);
	
	GMember findGMemberByUidAndGid(@Param("uid")int uid,@Param("gid")int gid);
	
	/**
	 * 查找用户加入的小组
	 * @param uid 用户id
	 * @param offset 偏移量
	 * @param size 数目
	 * @return 小组列表
	 */
	List<Group> findJoinedGroupByUid(@Param("uid")int uid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 查找最近加入的小组成员
	 * @param gid
	 * @return
	 */
	List<User> findRecentlyJoinedGMember(@Param("gid")int gid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 更新组员的状态
	 * @param gMember
	 * @return
	 */
	int updateGMemberStatus(GMember gMember);
	
	/**
	 * 统计一组小组的成员数
	 * @param gids 小组数组
	 * @return 小组成员数列表
	 */
	List<Integer> countGMember(int[] gids);
}
